Controller-Dokumentation
- Versionen
- Einleitung
- Bisher genutzte Sensor-Eigenschaften
- Der Controller
- Genutzte Infrastruktur
Versionen
Im Laufe des Projekts traten vermehrt Probleme mit der zuerst eingesetzten Hardware. Daher wurde neue Hardware angeschafft. Die ursprüngliche Hardware ist nun als Version 0.1 zu sehen. Die neue Hardware ist als Version 0.2 einzusehen. Die genutzte Infrastruktur ist für beide Versionen identisch.
Einleitung
Dieser Teil des Projekts beschäftigt sich mit der Steuerung von 3D-Objekten im Web. Dabei soll die Steuerung konkret mit einem Mikrokontroller und einem Beschleunigungssensor umgesetzt werden, sodass man diese Steuerung auch ohne eine App auf einem Smartphone oder einem Browser realisieren kann. Diese Dokumentation soll dazu dienen, die nötigen Schritte zum Nachbau zu liefern. Dabei wird sowohl der Controller genauer erläutert, als auch die Infrastruktur, in der der Controller in diesem Projekt genutzt wird.
Bisher genutzte Sensor-Eigenschaften
Bisher wird der Controller lediglich zum drehen des 3D-Objektes genutzt. Ein verschieben ist bis dato nicht erwünscht und wurde daher noch nicht implementiert. Zum drehen des Objektes bieten sich zwei Eigenschaften des Sensors. Zum einen kann man die Gyroskop-Werte nutzen, um die momentane Veränderung festzustellen und diese übertragen. Das 3D-Modell wird in ThreeJS dann um diese Werte (jeweils zwischen 0 und 1) gedreht. Die Zweite Möglichkeit ist das Messen der aktuellen Lage durch eine Winkelmessung. Hierbei wird dann das Objekt nicht mehr rotiert, sondern in eine bestimmte Stellung versetzt. Aktuell werden die Gyroskop-Werte genutzt.
Der Controller
Version 0.2
Mit dieser Version wurde der Gyroskop-Sensor und der Microcontroller ersetzt. Das sollte die mangelhafte System-Stabilität erheblich verbessern. Außerdem wurde aus den gleichen Gründen das Display inkl. Button-Schaltung entfernt.
Hardware
Die unten gelistete Hardware wurde für den zweiten Prototypen eingesetzt. Das dazugehörige Schaltbild zeigt die genaue Zusammenstellung
Hardware | Nutzen |
---|---|
Adafruit HUZZAH32 Feather | Microcontroller |
Bosch BNO055 | 9-Achsen Beschleunigungssensor |
Zusammenbau
Um den Controller möglichst einfach nachzubauen, wurde mit der Open-Source-Software Fritzing ein Steckplatine nachgebaut. Diese ist nahezu identisch dem Orginal.
Software
Die Software des Microcontrollers wurde mit der Arduino IDE in der Sprache C geschrieben. Um den Microcontroller und die genutzten Bausteine zu benutzen, werden mehrere Bibliotheken benötigt:
Bibliothek | Nutzen | Link |
---|---|---|
ESP32 Bibliothekt | stellt Board-Konfigurationen für ESP32-Boards bereit | Github Repo |
ArduinoJSON | erstellen & lesen von JSON-Nachrichten | in Arduino IDE ladbar |
Adafruit BNO055 | 9-Achsen Sensor | in Arduino IDE ladbar |
Adafruit Sensoren | Hilfsbibliothek für Adafruit-Sensoren | Github Repo |
WebSockets | WebSocket-Verbindung | in Arduino IDE ladbar |
Version 0.1
Hardware
Die unten gelistete Hardware wurde für den ersten Prototypen eingesetzt. Das dazugehörige Schaltbild zeigt die genaue Zusammenstellung.
Hardware | Nutzen |
---|---|
Wemos Lolin32 Light | Microcontroller |
GY-521 | 9-Achsen Beschleunigungssensor |
SSD1306 | OLED-Display |
2x Button | Benötigt, um auf dem Display die Seiten durchzuschalten |
2x 10k Ohm Wiederstand | Benötigt für Button-Schaltung |
Zusammenbau
Um den Controller möglichst einfach nachzubauen, wurde mit der Open-Source-Software Fritzing ein Steckplatine nachgebaut. Diese ist nahezu identisch dem Orginal.
Software
Die Software des Microcontrollers wurde mit der Arduino IDE in der Sprache C geschrieben. Um den Microcontroller und die genutzten Bausteine zu benutzen, werden mehrere Bibliotheken benötigt:
Bibliothek | Nutzen | Link |
---|---|---|
ESP32 Bibliothekt | stellt Board-Konfigurationen für ESP32-Boards bereit | Github Repo |
Adafruit SSD1306 | Display | in Arduino IDE ladbar |
ArduinoJSON | erstellen & lesen von JSON-Nachrichten | in Arduino IDE ladbar |
MPU6050_tockn | 9-Achsen Sensor | in Arduino IDE ladbar |
WebSockets | WebSocket-Verbindung | in Arduino IDE ladbar |
Die genutzte Infrastruktur
Da der ESP32-Controller keine SSL-Verbindung aufbauen kann, wird für den Controller ein eigenes WLAN benötigt. Dieses wird in diesem Projekt durch eine kleinen Linux-PC realisiert. Dieser PC besitzt mehrere Komponenten und Konfigurationen, um die Nutzungsmöglichkeiten möglichst wenig einzuschränken. Zum einen hostet der Linux-PC einen apache-Webserver mit den anzuzeigenden 3D-Modellen und deren Präsentationsseiten (html & JavaScript). Da dieser PC als Bridge konfiguriert wurde, können dadurch alle anderen Teilnehmer des eth0 Netzwerkes auch diese Präsentationsseiten aufrufen. Die IP-Adresse des Linux-PCs bezieht er für eth0 vom jeweiligen DHCP-Server. Als zweite Komponente baut der Linux-PC ein WLAN auf, und hostet dafür einen eigenen DHCP-Server. Die Internetverbindung aus dem eth0 Anschluss wird dabei durchgeroutet. In diesem neuen Netzwerk ist der Linux-PC unter 192.168.1.1 erreichbar. Als letzte Komponente hostet der Linux-PC einen WebSocketServer über eine NodeJS Anwendung. Dieser WebSocketServer ist von beiden Netzwerken erreichbar und kann zwischen diesen kommunizieren. Dadurch können Präsentationsseiten sich aus dem eth0 Netzwerk dort anmelden und die Update-Nachrichten vom Controller aus dem WLAN erhalten. Eben jene Konfiguration ist im unteren Schaubild dargestellt.
Github-Repository des Controllers
https://github.com/knigh7m4r3/dh2018-controller